<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 创建对象 
        // 1.字面量创建  var obj = {}; 2.内置构造函数 var obj = new Object(); 3. 自定义构造函数
        // function Person(name,age){
        //     this.name = name;
        //     this.age = age;
        // }

        // var zhangsan = new Person("张三",20);
        // console.log(zhangsan);


        // 2. 创建原型对象  ：Object.create
        // var obj = Object.create({myname:"张三",age:20});
        // console.log(obj);

        // 3. 存取器创建对象
        // 可以创建可控对象
        // value  configurable enumerable
        // var obj = Object.create(null,{
        //     myname:{
        //         value:"张三",  // value 是预定义的 名称
        //         enumerable:true
        //     },
        //     age:{
        //         value:20,
        //         configurable:true,  // 默认是false 不能被配置 ，不能被删除；
        //         enumerable:true,// 可枚举 ，循环需要对象有可枚举属性
        //     }
        // })
        // console.log(obj);

        // // 删除对象属性 
        // // delete obj.age;
        // // console.log(obj);

        // for(var key in obj){
        //     console.log(key);
        // }


        // var obj = {
        //     myname:"张三",
        //     age:20
        // }

        // delete obj.age;  // 删除age属性
        // console.log(obj);


        // 可以通过get 和 set 取代 value 值；
        
        var obj = Object.create(null,{
            myname:{
                // value:"张三",  // 获取   设置 
                get:function(){
                    console.log("get执行了");
                    // 获取张三属性的时候执行
                    return "张三";
                },
                set:function(newvalue){
                    console.log("设置的新值是",newvalue);
                },
                configurable:true,
                enumerable:true
            },
            age:{
                value:20,
                configurable:true,
                enumerable:true
            }
        })
        console.log(obj);
        // obj.myname; // get操作 ，获取obj里的myname属性
        obj.myname = "李四"; // 设置 属性 就会执行 set 函数；
        


    </script>
</body>
</html>